package com.delio.server.produccion.valesalidas;

import java.sql.SQLException;
import java.util.List;

import com.delio.client.produccion.valesalidas.ValeSalida;
import com.delio.client.produccion.valesalidas.ValeSalidaService;
import com.delio.server.base.Conexion;
import com.delio.server.base.util.GxtGridPaginate;
import com.extjs.gxt.ui.client.data.BasePagingLoadResult;
import com.extjs.gxt.ui.client.data.FilterPagingLoadConfig;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.ibatis.sqlmap.client.SqlMapClient;

public class ValeSalidaServiceImpl extends RemoteServiceServlet 
implements ValeSalidaService{

	private static final long serialVersionUID = 1L;
	
	static SqlMapClient sqlMap = Conexion.getSqlMap();
     
	@SuppressWarnings("unchecked")
	@Override
	public PagingLoadResult<ValeSalida> paginateValeSalida(
			FilterPagingLoadConfig config) {
	
		GxtGridPaginate paginate = new GxtGridPaginate();
		paginate.config = config;
		paginate.setLimit();
		if(paginate.order.equals("")){
			paginate.order = " order by id desc";
		}
		List<ValeSalida> data = null;
		System.out.println("esta fuera del try");
		try {
			data = sqlMap.queryForList("paginateValeSalida", paginate);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return new BasePagingLoadResult<ValeSalida>(data, paginate.offset, count(paginate));
	}
   
	public Integer count(GxtGridPaginate paginate){
		Integer count = null;
		try {
			count = (Integer) sqlMap.queryForObject("countValeSalida", paginate);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return count;
	}
	
	@SuppressWarnings("unchecked")
	public List<ValeSalida> ListarValeSalidas(){
		List<ValeSalida> lp = null;
		try{
			lp = sqlMap.queryForList("ListValeSalida");			
		}catch(Exception e){
			e.printStackTrace();
		}
		return lp;
	}
	
	@Override
	public boolean guardar(ValeSalida vs) {
	   boolean var = false;
	   try{
		   sqlMap.startTransaction();
	   
	     try{
		
     	    sqlMap.insert("insertValeSalida",vs);
     	    
     	    System.out.println("idvalesalida"+vs.getId());
     	    sqlMap.insert("insertVS_DetalleValeSalida",vs);
     	   
		    var = true;
	     }catch(Exception e){
	    	 e.printStackTrace();
	    	 var=false;
	     }
		 if(var)
		    sqlMap.commitTransaction();
		 else
		    sqlMap.endTransaction();
	   }catch(Exception e){
		   e.printStackTrace();
		   var = false;
	   }
		return var;
	}
	
    public boolean actualizar(ValeSalida vs){
		boolean var = false;
	    try{
	    	sqlMap.startTransaction();
	      try{
	        //p.setNroValeSalida(getNumeracion(vs.getNroValeSalida()));
		    sqlMap.update("updateValeSalida",vs);	
		   
		    sqlMap.update("updateVS_DetalleValeSalida",vs);
	 	   
		    var = true;
	 	   
	      }catch(Exception e){
	 		e.printStackTrace();
	 		 var=false;
		 }
	      if(var)
	    	 sqlMap.commitTransaction();
	      else
	    	 sqlMap.endTransaction();  
	    }catch(Exception e){
			e.printStackTrace();
			var=false;
		}
		return var;
	}
    
	@Override
	public boolean actualizarUltNro(ValeSalida p) {
		boolean var = false;
    	try{
		   sqlMap.update("updateValeSalidaUltimoNumero",p);	
		   var = true;	
		}catch(Exception e){
			e.printStackTrace();
		}

		return var;
	}
    
    
    /*private  static String getNumeracion(){
		Series.sqlMap = sqlMap;
		return Series.actualizarNumeracion("numeroValeSalida");
	}
	
	private static String getNumeracion(String codigoedit){
		Series.sqlMap = sqlMap;
		Series.ultimonumero = codigoedit;		
		return Series.actualizarNumeracion("numeroValeSalida");
	}*/
	
	@Override
	public boolean eliminar(int id){
		boolean var = false;
		try{
			sqlMap.delete("deleteValeSalida",id);
			var = true;
		}catch(Exception e){
			e.printStackTrace();
		}
		return var;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<ValeSalida> ListFechas(String rsnombre) {
		
		List<ValeSalida> ld = null;
		try{
			ld = sqlMap.queryForList("ListFechas",rsnombre);
		}catch(Exception e){
			e.printStackTrace();
		}
		return ld;
	}


	public Integer getId() {
       Integer id=null;
       try{
        	id = (Integer)sqlMap.queryForObject("getId");
       }catch(Exception e){
           e.printStackTrace();	
        }
		return id;
	}


}